// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:expect/expect.dart';
import 'package:reload_test/reload_test_utils.dart';

var value = "before";

Future<void> main() async {
  // Declare an unreferenced lazy static field.
  Expect.equals(0, hotReloadGeneration);
  await hotReload();

  // The lazy static field changes value but remains unread.
  Expect.equals(1, hotReloadGeneration);
  await hotReload();

  // The lazy static is now read and contains the updated value.
  Expect.equals(2, hotReloadGeneration);
  Expect.equals("before", value);
  await hotReload();

  // The lazy static is updated and read but retains the old value.
  Expect.equals(3, hotReloadGeneration);
  Expect.equals("before", value);
}

/** DIFF **/
/*
@@ -5,7 +5,7 @@
 import 'package:expect/expect.dart';
 import 'package:reload_test/reload_test_utils.dart';
 
-var value = "unused";
+var value = "before";
 
 Future<void> main() async {
   // Declare an unreferenced lazy static field.
*/
